home *** CD-ROM | disk | FTP | other *** search
/ Macwelt 1 / Macwelt DVD 1.toast / Web-Publishing / HTML-Editoren / Alpha ƒ / Tcl / Modes / HTML and CSS Modes / htmlEntities.tcl < prev    next >
Encoding:
Text File  |  2001-01-12  |  11.0 KB  |  288 lines

  1. ## -*-Tcl-*-
  2.  # ###################################################################
  3.  #  HTML mode - tools for editing HTML documents
  4.  # 
  5.  #  FILE: "htmlEntities.tcl"
  6.  #                                    created: 98-02-15 18.04.08 
  7.  #                                last update: 00-12-23 21.05.17 
  8.  #  Author: Johan Linde
  9.  #  E-mail: <alpha_www_tools@go.to>
  10.  #     www: <http://go.to/alpha_www_tools>
  11.  #  
  12.  # Version: 3.0
  13.  # 
  14.  # Copyright 1996-2001 by Johan Linde
  15.  #  
  16.  # This program is free software; you can redistribute it and/or modify
  17.  # it under the terms of the GNU General Public License as published by
  18.  # the Free Software Foundation; either version 2 of the License, or
  19.  # (at your option) any later version.
  20.  # 
  21.  # This program is distributed in the hope that it will be useful,
  22.  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  23.  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  24.  # GNU General Public License for more details.
  25.  # 
  26.  # You should have received a copy of the GNU General Public License
  27.  # along with this program; if not, write to the Free Software
  28.  # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  29.  # 
  30.  # ###################################################################
  31.  ##
  32.  
  33. #===============================================================================
  34. # ◊◊◊◊ Character entities ◊◊◊◊ #
  35. #===============================================================================
  36.  
  37. proc htmlEntities.tcl {} {}
  38.  
  39. proc html::AddCommonChars {} {
  40.     global HTMLmodeVars html::SmallCharsMenu html::CapitalCharsMenu
  41.     global html::OtherChars1Menu html::OtherChars2Menu
  42.     set commonChars $HTMLmodeVars(commonChars)
  43.     set pick [lremove -l [concat ${html::SmallCharsMenu} ${html::CapitalCharsMenu} ${html::OtherChars1Menu} ${html::OtherChars2Menu}] $commonChars]
  44.     regsub -all ! $pick "" pick1
  45.     if {![catch {listpick -l -p "Select chars for the commonly used char list" \
  46.       $pick1} newchars] && $newchars != ""} {
  47.         foreach c $newchars {
  48.             if {[lcontains pick $c]} {
  49.                 lappend commonChars $c
  50.             } else {
  51.                 lappend commonChars "!$c"
  52.             }
  53.         }
  54.         set commonChars [lsort $commonChars]
  55.         prefs::modifiedModeVar commonChars HTML
  56.         set HTMLmodeVars(commonChars) $commonChars
  57.         menu::buildSome "Character Entities"
  58.         message "New characters added to the common list."
  59.     }
  60. }
  61.  
  62. proc html::RemoveCommonChars {} {
  63.     global HTMLmodeVars 
  64.     set commonChars $HTMLmodeVars(commonChars)
  65.     if {![catch {listpick -l -p "Select chars to remove from the commonly used char list" \
  66.       $commonChars} chars] && $chars != ""} {
  67.         set commonChars [lremove -l $commonChars $chars]
  68.         prefs::modifiedModeVar commonChars HTML
  69.         set HTMLmodeVars(commonChars) $commonChars
  70.         menu::buildSome "Character Entities"
  71.         message "Characters removed from the common list."
  72.     }
  73.     
  74. }
  75.  
  76.  
  77. #
  78. # Insert special character entity
  79. #
  80. proc html::InsertCharacter {char} {
  81.     global html::SpecialCharacter html::CapCharSpecMenu
  82.     if {[isSelection]} { deleteSelection }
  83.     foreach c [list SpecialCharacter CapCharSpecMenu] {
  84.         if {[info exists html::${c}($char)]} {
  85.             insertText &[set html::${c}($char)]\;
  86.             return
  87.         }
  88.     }
  89. }
  90.  
  91.  
  92. proc html::SetEntityKeys {meny} {
  93.     global html::SmallCharsMenu html::CapitalCharsMenu html::OtherChars1Menu html::OtherChars2Menu html::PrefsFolder
  94.     if {[file exists [file join ${html::PrefsFolder} "HTML entity keys"]]} {source [file join ${html::PrefsFolder} "HTML entity keys"]}
  95.     set allkeys [set html::[join $meny ""]Menu]
  96.     foreach key $allkeys {
  97.         set dkey $key
  98.         if {[string index $key 0] == "!"} {
  99.             set dkey "[string index $key 1] [set key [string range $key 2 end]]"
  100.         }
  101.         if {[info exists htmlEntityKeys($key)]} {
  102.             lappend keys [list $htmlEntityKeys($key) $dkey]
  103.         } else {
  104.             lappend keys [list {} $dkey]
  105.         }
  106.     }
  107.     bind::fromArray htmlEntityKeys htmlEntityKeysProc 1 HTML
  108.     if {[eval dialog::adjustBindings [list $meny] newkeys modified 0 $keys] != "Cancel"} {
  109.         foreach key $modified {
  110.             set dkey $key
  111.             if {[lcontains allkeys "![string index $key 0][string range $key 2 end]"]} {
  112.                 set dkey [string range $key 2 end]
  113.             }
  114.             if {$newkeys($key) == ""} {unset htmlEntityKeys($dkey) htmlEntityKeysProc($dkey); continue}
  115.             set htmlEntityKeys($dkey) $newkeys($key)
  116.             set htmlEntityKeysProc($dkey) [list html::InsertCharacter $dkey]
  117.         }
  118.     }
  119.     bind::fromArray htmlEntityKeys htmlEntityKeysProc 0 HTML
  120.     html::SaveCache "HTML entity keys" "array set htmlEntityKeys [list [array get htmlEntityKeys]]\rarray set htmlEntityKeysProc [list [array get htmlEntityKeysProc]]"
  121. }
  122.  
  123. proc html::NewCharVar {var val} {
  124.     global html::SpecialCharacter html::CharacterSpecial
  125.     set html::SpecialCharacter($var) $val 
  126.     set html::CharacterSpecial($val) $var
  127. }
  128.  
  129. proc html::NewCapCharVar {var men val} {
  130.     global html::SpecialCharacter html::CharacterSpecial html::CapCharSpecMenu
  131.     set html::SpecialCharacter($var) $val 
  132.     set html::CharacterSpecial($val) $var
  133.     set html::CapCharSpecMenu($men) $val
  134. }
  135.  
  136. set html::SmallCharsMenu {eth thorn à á â ã ä å æ ç è é ê ë ì í î 
  137. ï ñ ò ó ô õ ö ø œ ù ú û ü y´ ÿ}
  138.  
  139. html::NewCharVar "ß" szlig
  140. html::NewCharVar "à" agrave
  141. html::NewCharVar "á" aacute
  142. html::NewCharVar "â" acirc
  143. html::NewCharVar "ã" atilde
  144. html::NewCharVar "ä" auml
  145. html::NewCharVar "å" aring
  146. html::NewCharVar "æ" aelig
  147. html::NewCharVar "ç" ccedil
  148. html::NewCharVar "è" egrave
  149. html::NewCharVar "é" eacute
  150. html::NewCharVar "ê" ecirc
  151. html::NewCharVar "ë" euml
  152. html::NewCharVar "ì" igrave
  153. html::NewCharVar "í" iacute
  154. html::NewCharVar "î" icirc
  155. html::NewCharVar "ï" iuml
  156. set html::CapCharSpecMenu(eth) eth
  157. html::NewCharVar "ñ" ntilde
  158. html::NewCharVar "ò" ograve
  159. html::NewCharVar "ó" oacute
  160. html::NewCharVar "ô" ocirc
  161. html::NewCharVar "õ" otilde
  162. html::NewCharVar "ö" ouml
  163. html::NewCharVar "ø" oslash
  164. html::NewCharVar "ù" ugrave
  165. html::NewCharVar "ú" uacute
  166. html::NewCharVar "û" ucirc
  167. html::NewCharVar "ü"    uuml
  168. set html::CapCharSpecMenu(y´) yacute
  169. set html::CapCharSpecMenu(thorn) thorn
  170. html::NewCharVar "ÿ"    yuml
  171. html::NewCharVar "œ" "#339"
  172.  
  173. set html::CapitalCharsMenu {ETH THORN À A´ A^ Ã Ä Å Æ Ç E` É E^ E¨ I` 
  174. I´ I^ I¨ Ñ O` O´ O^ Õ Ö Ø Œ U` U´ U^ Ü Y´ Y¨}
  175.  
  176. html::NewCapCharVar "À" "À" Agrave
  177. html::NewCapCharVar "Á" "A´" Aacute
  178. html::NewCapCharVar "Â" "A^" Acirc
  179. html::NewCapCharVar "Ã" "Ã" Atilde
  180. html::NewCapCharVar "Ä" "Ä" Auml
  181. html::NewCapCharVar "Å" "Å" Aring
  182. html::NewCapCharVar "Æ" "Æ" AElig
  183. html::NewCapCharVar "Ç" "Ç" Ccedil
  184. html::NewCapCharVar "È" "E`" Egrave
  185. html::NewCapCharVar "É" "É" Eacute
  186. html::NewCapCharVar "Ê" "E^" Ecirc
  187. html::NewCapCharVar "Ë" "E¨" Euml
  188. html::NewCapCharVar "Ì" "I`" Igrave
  189. html::NewCapCharVar "Í" "I´" Iacute
  190. html::NewCapCharVar "Î" "I^" Icirc
  191. html::NewCapCharVar "Ï" "I¨" Iuml
  192. set html::CapCharSpecMenu(ETH) ETH
  193. html::NewCapCharVar "Ñ" "Ñ" Ntilde
  194. html::NewCapCharVar "Ò" "O`" Ograve
  195. html::NewCapCharVar "Ó" "O´" Oacute
  196. html::NewCapCharVar "Ô" "O^" Ocirc
  197. html::NewCapCharVar "Õ" "Õ" Otilde
  198. html::NewCapCharVar "Ö" "Ö" Ouml
  199. html::NewCapCharVar "Ø" "Ø" Oslash
  200. html::NewCapCharVar "Ù" "U`" Ugrave
  201. html::NewCapCharVar "Ú" "U´" Uacute
  202. html::NewCapCharVar "Û" "U^" Ucirc
  203. html::NewCapCharVar "Ü" "Ü"    Uuml
  204. set html::CapCharSpecMenu(Y´) Yacute
  205. set html::CapCharSpecMenu(THORN) THORN
  206. html::NewCapCharVar "Œ" "Œ" "#338"
  207. html::NewCapCharVar "Ÿ" "Y¨" "#376"
  208.  
  209. set "html::CapCharSpecMenu(quotation mark)"    quot
  210. set html::CapCharSpecMenu(ampersand) amp
  211. set "html::CapCharSpecMenu(less than)" lt
  212. set "html::CapCharSpecMenu(greater than)" gt
  213. set "html::CapCharSpecMenu(nonbreak space)"    nbsp
  214. html::NewCapCharVar "¡" "inverted excl. mark" "#161"
  215. html::NewCapCharVar "¢" cent "#162"
  216. html::NewCapCharVar "£" pound "#163"
  217. html::NewCapCharVar "€" currency "#164"
  218. html::NewCapCharVar "¥" yen "#165"
  219. html::NewCapCharVar "\\|" "broken bar" "#166"
  220. html::NewCapCharVar "§" "section sign" "#167"
  221. html::NewCapCharVar "¨" diearesis "#168"
  222. html::NewCapCharVar "©" "copyright sign" copy
  223. html::NewCapCharVar "ª" "feminine ordinal ind." "#170"
  224. html::NewCapCharVar "«" "left double angle" "#171"
  225. html::NewCapCharVar "¬" "not sign" "#172"
  226. set "html::CapCharSpecMenu(soft hyphen)" "#173"
  227. html::NewCapCharVar "®" "registered sign" reg
  228. html::NewCapCharVar "¯" macron "#175"
  229. html::NewCapCharVar "°" degree "#176"
  230. html::NewCapCharVar "±" "plus-minus" "#177"
  231. set "html::CapCharSpecMenu(superscript two)" "#178"
  232. set "html::CapCharSpecMenu(superscript three)" "#179"
  233. html::NewCapCharVar "´" "acute accent" "#180"
  234. html::NewCapCharVar "µ" "micro sign" "#181"
  235. html::NewCapCharVar "¶" "paragraph sign" "#182"
  236. html::NewCapCharVar "·" "middle dot" "#183"
  237. html::NewCapCharVar "¸" cedilla "#184"
  238. set "html::CapCharSpecMenu(superscript one)" "#185"
  239. html::NewCapCharVar "º" "masculine ordinal ind." "#186"
  240. html::NewCapCharVar "»" "right double angle" "#187"
  241. set "html::CapCharSpecMenu(one quarter)" "#188"
  242. set "html::CapCharSpecMenu(one half)" "#189"
  243. set "html::CapCharSpecMenu(three quarters)" "#190"
  244. html::NewCapCharVar "¿" "inverted question mark" "#191"
  245. set html::CapCharSpecMenu(times) "#215"
  246. html::NewCapCharVar "÷" divide "#247"
  247. html::NewCapCharVar "–" "en dash" "#8211"
  248. html::NewCapCharVar "—" "em dash" "#8212"
  249. html::NewCapCharVar "‘" "left single quotation" "#8216"
  250. html::NewCapCharVar "’" "right single quotation" "#8217"
  251. html::NewCapCharVar "‚" "single low quotation" "#8218"
  252. html::NewCapCharVar "“" "left double quotation" "#8220"
  253. html::NewCapCharVar "”" "right double quotation" "#8221"
  254. html::NewCapCharVar "„" "double low quotation" "#8222"
  255. html::NewCapCharVar "†" dagger "#8224"
  256. html::NewCapCharVar "‡" "double dagger" "#8225"
  257. html::NewCapCharVar "‰" "per mille sign" "#8240"
  258. html::NewCapCharVar "‹" "left single angle" "#8249"
  259. html::NewCapCharVar "›" "right single angle" "#8250"
  260. html::NewCapCharVar "ƒ" florin "#402"
  261. html::NewCapCharVar "•" bullet "#8226"
  262. html::NewCapCharVar "…" ellipsis "#8230"
  263. html::NewCapCharVar "™" "trade mark sign" "#8482"
  264. html::NewCapCharVar "√" "square root" "#8730"
  265. html::NewCapCharVar "∞" infinity "#8734"
  266. html::NewCapCharVar "∫" integral "#8747"
  267. html::NewCapCharVar "≈" "approximately equal to" "#8776"
  268. html::NewCapCharVar "≠" "not equal to" "#8800"
  269. html::NewCapCharVar "≤" "less-than or equal" "#8804"
  270. html::NewCapCharVar "≥" "greater-than or equal" "#8805"
  271.  
  272. set html::OtherChars1Menu {ampersand {greater than} {less than} {!≤less-than or equal} {!≥greater-than or equal}
  273. {!≈approximately equal to} {!≠not equal to} {nonbreak space} {!"quotation mark} {!“left double quotation}
  274. {!”right double quotation} {!‘left single quotation} {!’right single quotation} {!‚single low quotation}
  275. {!„double low quotation} {!«left double angle} {!»right double angle} {!‹left single angle}
  276. {!›right single angle} {!¿inverted question mark} {!¡inverted excl. mark} {!ªfeminine ordinal ind.}
  277. {!ºmasculine ordinal ind.} {superscript one} {superscript two} {superscript three} {!®registered sign}
  278. {!©copyright sign} {!™trade mark sign} !°degree {!|broken bar}}
  279.  
  280. set html::OtherChars2Menu {!€currency !¢cent !£pound !¥yen !ƒflorin {!´acute accent} !¨diearesis !¸cedilla
  281. {!§section sign} {!¶paragraph sign} {soft hyphen} {!–en dash} {!—em dash} {one half} {one quarter}
  282. {three quarters} {!‰per mille sign} !…ellipsis !¯macron {!·middle dot} !•bullet !†dagger {!‡double dagger}
  283. {!µmicro sign} {!¬not sign} !±plus-minus !÷divide times {!√square root} !∞infinity !∫integral}
  284.  
  285.  
  286. rename html::NewCharVar ""
  287. rename html::NewCapCharVar ""
  288.